<<<<<<< .mine
<<<<<<< .mine
(define scanner-spec-hw6
  '((white-sp
     (whitespace) skip)
    (comment
     ("%" (arbno (not #\newline))) skip)
    (identifier
     (letter (arbno (or letter digit "?"))) symbol)
    (number
     (digit (arbno digit)) number)
    (true
     ("#t") symbol)
    (false
     ("#f") symbol)))

(define grammar-spec-hw6
  '((exp (number) lit-exp)
    (exp (identifier) var-exp)
    (exp (true) bool-exp)
    (exp (false) bool-exp)
    (exp ("(" subexp ")") sub-exp)
    (subexp ("lambda" "(" (arbno identifier) ")" exp) lambda-exp)
    (subexp ("if" exp exp exp) if-exp)
    (subexp ("add" exp exp) add-prim)
    (subexp ("sub" exp exp) subtract-prim)
    (subexp ("mul" exp exp) mult-prim)
    (subexp ("div" exp exp) div-prim)
    (subexp ("mod" exp exp) mod-prim)
    (subexp ("equal" exp exp) compare-exp)
    (subexp (exp (arbno exp)) app-exp)))


  (sllgen:make-define-datatypes scanner-spec-hw6 grammar-spec-hw6)

(define scan&parse
  (sllgen:make-string-parser scanner-spec-hw6 grammar-spec-hw6))

      =======
WXME0108 ## 
#|
   This file is in PLT Scheme editor format.
   Most likely, it was created by saving a program in DrScheme,
   and it probably contains a program with non-text elements (such
   as pictures, comment boxes, or test-cases boxes).
   Open this file in DrScheme to read its content.
                 www.plt-scheme.org
|#
 30 7 #"wxtext\0"
3 1 6 #"wxtab\0"
1 1 8 #"wxmedia\0"
3 1 8 #"wximage\0"
2 0 34 #"(lib \"syntax-browser.ss\" \"mrlib\")\0"
1 0 16 #"drscheme:number\0"
3 0 44 #"(lib \"number-snip.ss\" \"drscheme\" \"private\")\0"
1 0 36 #"(lib \"comment-snip.ss\" \"framework\")\0"
1 0 43 #"(lib \"collapsed-snipclass.ss\" \"framework\")\0"
0 0 19 #"drscheme:sexp-snip\0"
0 0 33 #"(lib \"bullet-snip.ss\" \"browser\")\0"
0 0 29 #"drscheme:bindings-snipclass%\0"
1 0 36 #"(lib \"cache-image-snip.ss\" \"mrlib\")\0"
1 0 22 #"drscheme:lambda-snip%\0"
1 0 18 #"java-comment-box%\0"
1 0 23 #"java-interactions-box%\0"
1 0 15 #"make-line-snip\0"
1 0 15 #"make-line-snip\0"
1 0 13 #"example-box%\0"
2 0 18 #"interactions-box%\0"
2 0 45 #"(lib \"image-snipr.ss\" \"slideshow\" \"private\")\0"
1 0 26 #"drscheme:pict-value-snip%\0"
0 0 38 #"(lib \"pict-snipclass.ss\" \"slideshow\")\0"
2 0 34 #"drscheme:vertical-separator-snip%\0"
1 0 18 #"drscheme:xml-snip\0"
1 0 31 #"(lib \"xml-snipclass.ss\" \"xml\")\0"
1 0 21 #"drscheme:scheme-snip\0"
2 0 34 #"(lib \"scheme-snipclass.ss\" \"xml\")\0"
1 0 15 #"test-case-box%\0"
2 0 10 #"text-box%\0"
1 0 1 6 #"wxloc\0"
00000000000 1 58 0 1 #"\0"
0 75 1 #"\0"
0 11 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 255 255 255 1 -1 0 9
#"Standard\0"
0 75 11 #" Monospace\0"
0 11 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 255 255 255 1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 2 24
#"framework:default-color\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 139 34 0 0 0 -1 -1 2 27
#"Matching Parenthesis Style\0"
0 -1 1 #"\0"
1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 139 34 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 40
#"framework:syntax-coloring:scheme:symbol\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 41
#"framework:syntax-coloring:scheme:keyword\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 194 116 31 0 0 0 -1 -1 2
41 #"framework:syntax-coloring:scheme:comment\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 194 116 31 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 40
#"framework:syntax-coloring:scheme:string\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 42
#"framework:syntax-coloring:scheme:constant\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 132 60 36 0 0 0 -1 -1 2 45
#"framework:syntax-coloring:scheme:parenthesis\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 132 60 36 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 39
#"framework:syntax-coloring:scheme:error\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 39
#"framework:syntax-coloring:scheme:other\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 14
#"Html Standard\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 81 112 203 0 0 0 -1 -1 2
49 #"drscheme:check-syntax:lexically-bound-identifier\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 81 112 203 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 68 0 203 0 0 0 -1 -1 2 42
#"drscheme:check-syntax:imported-identifier\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 68 0 203 0 0 0 -1 -1 2 37
#"profj:syntax-coloring:scheme:keyword\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 139 0 139 0 0 0 -1 -1 2 39
#"profj:syntax-coloring:scheme:prim-type\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 139 0 139 0 0 0 -1 -1 2 40
#"profj:syntax-coloring:scheme:identifier\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 139 34 0 0 0 -1 -1 2 36
#"profj:syntax-coloring:scheme:string\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 139 34 0 0 0 -1 -1 2 37
#"profj:syntax-coloring:scheme:literal\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 139 34 0 0 0 -1 -1 2 37
#"profj:syntax-coloring:scheme:comment\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 194 116 31 0 0 0 -1 -1 2
35 #"profj:syntax-coloring:scheme:error\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 37
#"profj:syntax-coloring:scheme:default\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 39
#"profj:syntax-coloring:scheme:uncovered\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 37
#"profj:syntax-coloring:scheme:covered\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 139 0 139 0 0 0 -1 -1 2 1
#"\0"
0 70 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 2 4
#"XML\0"
0 70 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 150 0 150 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 175 0 0 0 -1 -1 4 1
#"\0"
0 71 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 4 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 255 0 0 0 -1 -1 4 1
#"\0"
0 71 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 255 0 0 0 -1 -1 4 1
#"\0"
0 71 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 100 0 0 0 0 -1 -1 0 1
#"\0"
0 75 11 #" Monospace\0"
0 11 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 255 255 255 1 -1 0 1
#"\0"
0 -1 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 200 0 0 0 0 0 -1 -1 4 1
#"\0"
0 -1 1 #"\0"
1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 255 255 0 -1 -1 21 1
#"\0"
0 70 1 #"\0"
1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 21 1
#"\0"
0 70 1 #"\0"
2 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 21 1
#"\0"
0 70 1 #"\0"
1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 21 1
#"\0"
0 70 1 #"\0"
1 0 92 -1 -1 -1 -1 -1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 255 0 0 0 -1 -1 21 1
#"\0"
0 70 1 #"\0"
1 -2 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 21 1
#"\0"
0 70 1 #"\0"
1 -2 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 255 0 0 0 -1 -1 21 1
#"\0"
0 70 1 #"\0"
1 0 92 -1 -1 -1 -1 -1 1 0 0 0 0 0 0 0 0 1 1 1 34 139 34 0 0 0 -1 -1 21 1
#"\0"
0 70 1 #"\0"
1 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1
00000000002 0 00000000000 7 00000000000 1373 0 16 3 1 #"("
0 0 9 3 6 #"define"
0 0 4 3 1 #" "
0 0 8 3 16 #"scanner-spec-hw6"
0 0 4 29 1 #"\n"
0 0 4 3 2 #"  "
0 0 14 3 1 #"'"
0 0 16 3 2 #"(("
0 0 8 3 8 #"white-sp"
0 0 4 29 1 #"\n"
0 0 4 3 5 #"     "
0 0 16 3 1 #"("
0 0 8 3 10 #"whitespace"
0 0 16 3 1 #")"
0 0 4 3 1 #" "
0 0 8 3 4 #"skip"
0 0 16 3 1 #")"
0 0 4 29 1 #"\n"
0 0 4 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 7 #"comment"
0 0 4 29 1 #"\n"
0 0 4 3 5 #"     "
0 0 16 3 1 #"("
0 0 13 3 3 #"\"%\""
0 0 4 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 5 #"arbno"
0 0 4 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"not"
0 0 4 3 1 #" "
0 0 14 3 9 #"#\\newline"
0 0 16 3 3 #")))"
0 0 4 3 1 #" "
0 0 8 3 4 #"skip"
0 0 16 3 1 #")"
0 0 4 29 1 #"\n"
0 0 4 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 10 #"identifier"
0 0 4 29 1 #"\n"
0 0 4 3 5 #"     "
0 0 16 3 1 #"("
0 0 8 3 6 #"letter"
0 0 4 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 5 #"arbno"
0 0 4 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"or"
0 0 4 3 1 #" "
0 0 8 3 6 #"letter"
0 0 4 3 1 #" "
0 0 8 3 5 #"digit"
0 0 4 3 1 #" "
0 0 13 3 3 #"\"?\""
0 0 16 3 3 #")))"
0 0 4 3 1 #" "
0 0 8 3 6 #"symbol"
0 0 16 3 1 #")"
0 0 4 29 1 #"\n"
0 0 4 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 6 #"number"
0 0 4 29 1 #"\n"
0 0 4 3 5 #"     "
0 0 16 3 1 #"("
0 0 8 3 5 #"digit"
0 0 4 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 5 #"arbno"
0 0 4 3 1 #" "
0 0 8 3 5 #"digit"
0 0 16 3 2 #"))"
0 0 4 3 1 #" "
0 0 8 3 6 #"number"
0 0 16 3 1 #")"
0 0 4 29 1 #"\n"
0 0 4 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 4 #"true"
0 0 4 29 1 #"\n"
0 0 4 3 5 #"     "
0 0 16 3 1 #"("
0 0 13 3 4 #"\"#t\""
0 0 16 3 1 #")"
0 0 4 3 1 #" "
0 0 8 3 6 #"symbol"
0 0 16 3 1 #")"
0 0 4 29 1 #"\n"
0 0 4 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 5 #"false"
0 0 4 29 1 #"\n"
0 0 4 3 5 #"     "
0 0 16 3 1 #"("
0 0 13 3 4 #"\"#f\""
0 0 16 3 1 #")"
0 0 4 3 1 #" "
0 0 8 3 6 #"symbol"
0 0 16 3 3 #")))"
0 0 4 29 1 #"\n"
0 0 4 29 1 #"\n"
0 0 16 3 1 #"("
0 0 9 3 6 #"define"
0 0 4 3 1 #" "
0 0 8 3 16 #"grammar-spec-hw6"
0 0 4 29 1 #"\n"
0 0 4 3 2 #"  "
0 0 14 3 1 #"'"
0 0 16 3 2 #"(("
0 0 8 3 3 #"exp"
0 0 4 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 6 #"number"
0 0 16 3 1 #")"
0 0 4 3 1 #" "
0 0 8 3 7 #"lit-exp"
0 0 16 3 1 #")"
0 0 4 29 1 #"\n"
0 0 4 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 3 #"exp"
0 0 4 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 10 #"identifier"
0 0 16 3 1 #")"
0 0 4 3 1 #" "
0 0 8 3 7 #"var-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 1 #"("
0 0 13 3 2 #"\" "
0 0 8 3 1 #"s"
0 0 8 3 1 #"u"
0 0 8 3 4 #"bexp"
0 0 13 3 1 #" "
0 0 13 3 1 #"\""
0 0 13 3 1 #")"
0 0 13 3 1 #"\""
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 7 #"sub-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 13 #"\"lambda\" \"(\" "
0 0 16 3 1 #"("
0 0 8 3 5 #"arbno"
0 0 13 3 1 #" "
0 0 8 3 10 #"identifier"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 13 3 1 #"\""
0 0 13 3 1 #")"
0 0 13 3 2 #"\" "
0 0 8 3 3 #"exp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 10 #"lambda-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 2 #"if"
0 0 13 3 2 #"\" "
0 0 8 3 7 #"boolexp"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 6 #"if-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 4 #"cond"
0 0 13 3 2 #"\" "
0 0 13 3 1 #"\""
0 0 13 3 1 #"("
0 0 13 3 2 #"\" "
0 0 16 3 1 #"("
0 0 8 3 5 #"arbno"
0 0 13 3 1 #" "
0 0 8 3 5 #"boole"
0 0 8 3 1 #"x"
0 0 8 3 1 #"p"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 13 3 1 #"\""
0 0 13 3 1 #")"
0 0 13 3 2 #"\" "
0 0 13 3 1 #"\""
0 0 13 3 1 #"("
0 0 13 3 1 #"\""
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 13 3 1 #"\""
0 0 13 3 4 #"else"
0 0 13 3 2 #"\" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 13 3 1 #"\""
0 0 13 3 1 #")"
0 0 13 3 1 #"\""
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 8 #"cond-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 3 #"add"
0 0 13 3 2 #"\" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 8 #"add-prim"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 3 #"sub"
0 0 13 3 2 #"\" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 13 #"subtract-prim"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 3 #"mul"
0 0 13 3 2 #"\" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 9 #"mult-prim"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 3 #"div"
0 0 13 3 2 #"\" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 8 #"div-prim"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 3 #"mod"
0 0 13 3 2 #"\" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 8 #"mod-prim"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 1 #"s"
0 0 8 3 1 #"u"
0 0 8 3 4 #"bexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 5 #"arbno"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 2 #"))"
0 0 13 3 1 #" "
0 0 8 3 7 #"app-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 4 3 4 #"    "
0 0 11 3 5 #";    "
0 0 11 3 1 #"("
0 0 11 3 6 #"subexp"
0 0 11 3 1 #" "
0 0 11 3 1 #"("
0 0 11 3 7 #"boolexp"
0 0 11 3 1 #")"
0 0 11 3 1 #" "
0 0 11 3 8 #"bool-exp"
0 0 11 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 1 #"b"
0 0 8 3 1 #"o"
0 0 8 3 1 #"o"
0 0 8 3 4 #"lexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"true"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 8 #"true-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 1 #"b"
0 0 8 3 1 #"o"
0 0 8 3 1 #"o"
0 0 8 3 4 #"lexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 5 #"false"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 9 #"false-exp"
0 0 16 3 1 #")"
0 0 4 29 1 #"\n"
0 0 4 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 1 #"b"
0 0 8 3 1 #"o"
0 0 8 3 1 #"o"
0 0 8 3 1 #"l"
0 0 8 3 1 #"e"
0 0 8 3 1 #"x"
0 0 8 3 1 #"p"
0 0 4 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 1 #"("
0 0 13 3 1 #"\""
0 0 4 3 1 #" "
0 0 8 3 1 #"b"
0 0 8 3 1 #"o"
0 0 8 3 1 #"o"
0 0 8 3 1 #"l"
0 0 8 3 1 #"s"
0 0 8 3 1 #"u"
0 0 8 3 1 #"b"
0 0 8 3 1 #"e"
0 0 8 3 1 #"x"
0 0 8 3 1 #"p"
0 0 4 3 1 #" "
0 0 13 3 1 #"\""
0 0 13 3 1 #")"
0 0 13 3 1 #"\""
0 0 16 3 1 #")"
0 0 4 3 1 #" "
0 0 8 3 1 #"b"
0 0 8 3 1 #"o"
0 0 8 3 1 #"o"
0 0 8 3 1 #"l"
0 0 8 3 1 #"-"
0 0 8 3 1 #"s"
0 0 8 3 1 #"u"
0 0 8 3 1 #"b"
0 0 8 3 1 #"-"
0 0 8 3 1 #"e"
0 0 8 3 1 #"x"
0 0 8 3 1 #"p"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 1 #"b"
0 0 8 3 1 #"o"
0 0 8 3 1 #"o"
0 0 8 3 7 #"lsubexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 3 #"and"
0 0 13 3 2 #"\" "
0 0 8 3 7 #"boolexp"
0 0 13 3 1 #" "
0 0 8 3 7 #"boolexp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 7 #"and-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 4 #"bool"
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 2 #"or"
0 0 13 3 2 #"\" "
0 0 8 3 7 #"boolexp"
0 0 13 3 1 #" "
0 0 8 3 7 #"boolexp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 6 #"or-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 4 #"bool"
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 3 #"xor"
0 0 13 3 2 #"\" "
0 0 8 3 7 #"boolexp"
0 0 13 3 1 #" "
0 0 8 3 7 #"boolexp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 7 #"xor-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 4 #"bool"
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 5 #"equal"
0 0 13 3 2 #"\" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 3 #"equ"
0 0 8 3 6 #"al-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 4 #"bool"
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 7 #"greater"
0 0 13 3 2 #"\" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 11 #"greater-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 4 #"bool"
0 0 8 3 6 #"subexp"
0 0 13 3 1 #" "
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 6 #"lesser"
0 0 13 3 2 #"\" "
0 0 8 3 3 #"exp"
0 0 13 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 1 #")"
0 0 13 3 1 #" "
0 0 8 3 10 #"lesser-exp"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 13 3 4 #"    "
0 0 16 3 2 #"))"
0 0 13 29 1 #"\n"
0 0 13 29 1 #"\n"
0 0 16 3 1 #"("
0 0 9 3 6 #"define"
0 0 13 3 1 #" "
0 0 8 3 10 #"scan&parse"
0 0 13 29 1 #"\n"
0 0 13 3 2 #"  "
0 0 16 3 1 #"("
0 0 8 3 25 #"sllgen:make-string-parser"
0 0 13 3 1 #" "
0 0 8 3 16 #"scanner-spec-hw6"
0 0 13 3 1 #" "
0 0 8 3 16 #"grammar-spec-hw6"
0 0 16 3 2 #"))"
0 0 13 29 1 #"\n"
0 0 16 3 1 #"("
0 0 8 3 28 #"sllgen:make-define-datatypes"
0 0 13 3 1 #" "
0 0 8 3 16 #"scanner-spec-hw6"
0 0 13 3 1 #" "
0 0 8 3 16 #"grammar-spec-hw6"
0 0 16 3 1 #")"
0 0 13 29 1 #"\n"
0 0 4 29 1 #"\n"
0 0 16 3 1 #"("
0 0 9 3 1 #"d"
0 0 9 3 1 #"e"
0 0 9 3 1 #"f"
0 0 9 3 1 #"i"
0 0 9 3 1 #"n"
0 0 9 3 1 #"e"
0 0 4 3 1 #" "
0 0 8 3 1 #"t"
0 0 8 3 1 #"e"
0 0 8 3 1 #"s"
0 0 8 3 1 #"t"
0 0 8 3 1 #"-"
0 0 8 3 1 #"l"
0 0 8 3 1 #"i"
0 0 8 3 1 #"s"
0 0 8 3 1 #"t"
0 0 4 29 1 #"\n"
0 0 4 3 2 #"  "
0 0 14 3 1 #"'"
0 0 16 3 1 #"("
0 0 13 3 1 #"\""
0 0 13 3 1 #"5"
0 0 13 3 1 #"\""
0 0 4 3 1 #" "
0 0 13 3 1 #"\""
0 0 13 3 1 #"a"
0 0 13 3 1 #"\""
0 0 4 3 1 #" "
0 0 13 3 1 #"\""
0 0 13 3 1 #"("
0 0 13 3 1 #"i"
0 0 13 3 1 #"f"
0 0 13 3 1 #" "
0 0 13 3 1 #"#"
0 0 13 3 1 #"t"
0 0 13 3 1 #" "
0 0 13 3 1 #"c"
0 0 13 3 1 #"o"
0 0 13 3 1 #"r"
0 0 13 3 1 #"r"
0 0 13 3 1 #"e"
0 0 13 3 1 #"c"
0 0 13 3 1 #"t"
0 0 13 3 1 #" "
0 0 13 3 1 #"x"
0 0 13 3 1 #")"
0 0 13 3 1 #"\""
0 0 4 3 1 #" "
0 0 13 3 1 #"\""
0 0 13 3 1 #"("
0 0 13 3 1 #"i"
0 0 13 3 1 #"f"
0 0 13 3 1 #" "
0 0 13 3 1 #"("
0 0 13 3 1 #"g"
0 0 13 3 1 #"r"
0 0 13 3 1 #"e"
0 0 13 3 1 #"a"
0 0 13 3 1 #"t"
0 0 13 3 1 #"e"
0 0 13 3 1 #"r"
0 0 13 3 1 #" "
0 0 13 3 1 #"4"
0 0 13 3 1 #" "
0 0 13 3 1 #"5"
0 0 13 3 1 #")"
0 0 13 3 1 #" "
0 0 13 3 1 #"c"
0 0 13 3 1 #"o"
0 0 13 3 1 #"r"
0 0 13 3 1 #"r"
0 0 13 3 1 #"e"
0 0 13 3 1 #"c"
0 0 13 3 1 #"t"
0 0 13 3 1 #" "
0 0 13 3 1 #"x"
0 0 13 3 1 #")"
0 0 13 3 1 #"\""
0 0 16 3 2 #"))"
0 0 18 29 1 #"\n"
0 0 18 29 1 #"\n"
0 0 16 3 1 #"("
0 0 9 3 1 #"d"
0 0 9 3 1 #"e"
0 0 9 3 1 #"f"
0 0 9 3 1 #"i"
0 0 9 3 1 #"n"
0 0 9 3 1 #"e"
0 0 18 3 1 #" "
0 0 8 3 1 #"t"
0 0 8 3 1 #"e"
0 0 8 3 1 #"s"
0 0 8 3 1 #"t"
0 0 18 29 1 #"\n"
0 0 18 3 2 #"  "
0 0 16 3 1 #"("
0 0 9 3 1 #"l"
0 0 9 3 1 #"a"
0 0 9 3 1 #"m"
0 0 9 3 1 #"b"
0 0 9 3 1 #"d"
0 0 9 3 1 #"a"
0 0 18 3 1 #" "
0 0 16 3 2 #"()"
0 0 18 29 1 #"\n"
0 0 18 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 3 #"map"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 9 3 6 #"lambda"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #"x"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #"s"
0 0 8 3 1 #"c"
0 0 8 3 1 #"a"
0 0 8 3 1 #"n"
0 0 8 3 1 #"&"
0 0 8 3 1 #"p"
0 0 8 3 1 #"a"
0 0 8 3 1 #"r"
0 0 8 3 1 #"s"
0 0 8 3 1 #"e"
0 0 18 3 1 #" "
0 0 8 3 1 #"x"
0 0 16 3 3 #")))"
0 0 18 3 1 #" "
0 0 8 3 9 #"test-list"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 29 1 #"\n"
0 0 16 3 1 #"("
0 0 9 3 6 #"define"
0 0 18 3 1 #" "
0 0 8 3 7 #"unparse"
0 0 18 29 1 #"\n"
0 0 18 3 2 #"  "
0 0 16 3 1 #"("
0 0 9 3 6 #"lambda"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #"x"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 4 #"    "
0 0 16 3 1 #"("
0 0 9 3 4 #"cond"
0 0 18 29 1 #"\n"
0 0 18 3 6 #"      "
0 0 16 3 2 #"(("
0 0 8 3 4 #"exp?"
0 0 18 3 1 #" "
0 0 8 3 1 #"x"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 7 #"       "
0 0 16 3 1 #"("
0 0 9 3 5 #"cases"
0 0 18 3 1 #" "
0 0 8 3 3 #"exp"
0 0 18 3 1 #" "
0 0 8 3 1 #"x"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 7 #"lit-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"num"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 8 3 3 #"num"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 7 #"var-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"id"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 8 3 2 #"id"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 2 #"su"
0 0 8 3 1 #"b"
0 0 8 3 1 #"-"
0 0 8 3 1 #"e"
0 0 8 3 1 #"x"
0 0 8 3 1 #"p"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"ex"
0 0 8 3 1 #"p"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #"u"
0 0 8 3 1 #"n"
0 0 8 3 1 #"p"
0 0 8 3 1 #"a"
0 0 8 3 1 #"r"
0 0 8 3 1 #"s"
0 0 8 3 1 #"e"
0 0 18 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 4 #"))))"
0 0 18 29 1 #"\n"
0 0 18 3 6 #"      "
0 0 16 3 2 #"(("
0 0 8 3 1 #"s"
0 0 8 3 1 #"u"
0 0 8 3 2 #"be"
0 0 8 3 1 #"x"
0 0 8 3 1 #"p"
0 0 8 3 1 #"?"
0 0 18 3 1 #" "
0 0 8 3 1 #"x"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 7 #"       "
0 0 16 3 1 #"("
0 0 9 3 5 #"cases"
0 0 18 3 1 #" "
0 0 8 3 6 #"subexp"
0 0 18 3 1 #" "
0 0 8 3 1 #"x"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 10 #"lambda-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"ids"
0 0 18 3 1 #" "
0 0 8 3 4 #"body"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 9 3 6 #"lambda"
0 0 18 3 1 #" "
0 0 8 3 3 #"ids"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"body"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 6 #"if-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"test-exp"
0 0 18 3 1 #" "
0 0 8 3 8 #"true-exp"
0 0 18 3 1 #" "
0 0 8 3 9 #"false-exp"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 17 #"                 "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 2 #"if"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 8 #"test-exp"
0 0 16 3 2 #"))"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 8 #"true-exp"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 9 #"false-exp"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 8 #"cond-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"s1"
0 0 18 3 1 #" "
0 0 8 3 2 #"s2"
0 0 18 3 1 #" "
0 0 8 3 2 #"s3"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 2 #"s2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 2 #"s3"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 8 #"add-prim"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 3 #"add"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 13 #"subtract-prim"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 3 #"sub"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 9 #"mult-prim"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 3 #"mul"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 8 #"div-prim"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 3 #"div"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 8 #"mod-prim"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 3 #"mod"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 7 #"app-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 5 #"rator"
0 0 18 3 1 #" "
0 0 8 3 5 #"rands"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 18 #"                  "
0 0 16 3 1 #"("
0 0 8 3 4 #"cons"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 5 #"rator"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"map"
0 0 18 3 1 #" "
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 5 #"rands"
0 0 16 3 5 #")))))"
0 0 18 29 1 #"\n"
0 0 18 3 6 #"      "
0 0 16 3 2 #"(("
0 0 8 3 8 #"boolexp?"
0 0 18 3 1 #" "
0 0 8 3 1 #"x"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 7 #"       "
0 0 16 3 1 #"("
0 0 9 3 2 #"ca"
0 0 9 3 1 #"s"
0 0 9 3 1 #"e"
0 0 9 3 1 #"s"
0 0 18 3 1 #" "
0 0 8 3 1 #"b"
0 0 8 3 2 #"oo"
0 0 8 3 3 #"lex"
0 0 8 3 1 #"p"
0 0 18 3 1 #" "
0 0 8 3 1 #"x"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 1 #"t"
0 0 8 3 3 #"rue"
0 0 8 3 3 #"-ex"
0 0 8 3 1 #"p"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #"t"
0 0 8 3 1 #"r"
0 0 8 3 1 #"u"
0 0 8 3 1 #"e"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 14 3 1 #"#"
0 0 14 3 1 #"t"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 1 #"f"
0 0 8 3 2 #"al"
0 0 8 3 1 #"s"
0 0 8 3 5 #"e-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"fa"
0 0 8 3 2 #"ls"
0 0 8 3 1 #"e"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 14 3 1 #"#"
0 0 14 3 1 #"f"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 1 #"b"
0 0 8 3 1 #"o"
0 0 8 3 1 #"o"
0 0 8 3 1 #"l"
0 0 8 3 1 #"-"
0 0 8 3 2 #"su"
0 0 8 3 1 #"b"
0 0 8 3 2 #"-e"
0 0 8 3 1 #"x"
0 0 8 3 1 #"p"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"ex"
0 0 8 3 1 #"p"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"un"
0 0 8 3 2 #"pa"
0 0 8 3 1 #"r"
0 0 8 3 2 #"se"
0 0 18 3 1 #" "
0 0 8 3 3 #"exp"
0 0 16 3 4 #"))))"
0 0 18 29 1 #"\n"
0 0 18 3 6 #"      "
0 0 16 3 2 #"(("
0 0 8 3 1 #"b"
0 0 8 3 1 #"o"
0 0 8 3 3 #"ols"
0 0 8 3 1 #"u"
0 0 8 3 2 #"be"
0 0 8 3 1 #"x"
0 0 8 3 1 #"p"
0 0 8 3 1 #"?"
0 0 18 3 1 #" "
0 0 8 3 1 #"x"
0 0 16 3 1 #")"
0 0 18 29 1 #"\n"
0 0 18 3 7 #"       "
0 0 16 3 1 #"("
0 0 9 3 1 #"c"
0 0 9 3 1 #"a"
0 0 9 3 1 #"s"
0 0 9 3 1 #"e"
0 0 9 3 1 #"s"
0 0 18 3 1 #" "
0 0 8 3 2 #"bo"
0 0 8 3 1 #"o"
0 0 8 3 2 #"ls"
0 0 8 3 1 #"u"
0 0 8 3 2 #"be"
0 0 8 3 1 #"x"
0 0 8 3 1 #"p"
0 0 18 3 1 #" "
0 0 8 3 1 #"x"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 7 #"and-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 3 #"and"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 6 #"or-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 2 #"or"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 7 #"xor-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 3 #"xor"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 9 #"equal-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 5 #"equal"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 11 #"greater-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 7 #"greater"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 18 29 1 #"\n"
0 0 18 3 9 #"         "
0 0 16 3 1 #"("
0 0 8 3 10 #"lesser-exp"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"list"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 6 #"lesser"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 18 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 7 #"unparse"
0 0 18 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 5 #")))))"
0 0 18 29 1 #"\n"
0 0 18 3 6 #"      "
0 0 16 3 1 #"("
0 0 8 3 4 #"else"
0 0 18 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 7 #"whoops!"
0 0 16 3 4 #"))))"
0 0 18 29 1 #"\n"
0 0 18 29 1 #"\n"
0 7 00000003049 4 00000000000 1 00000000000 507 0 16 3 1 #"("
0 0 9 3 6 #"define"
0 0 2 3 1 #" "
0 0 8 3 8 #"evaluate"
0 0 2 29 1 #"\n"
0 0 2 3 2 #"  "
0 0 16 3 1 #"("
0 0 9 3 6 #"lambda"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"ast"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 4 #"    "
0 0 16 3 1 #"("
0 0 8 3 2 #"if"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 5 #"null?"
0 0 2 3 1 #" "
0 0 8 3 3 #"ast"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 10 #"eopl:error"
0 0 2 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 13 3 35 #"\"Needs an expression. ~S was sent.\""
0 0 2 3 1 #" "
0 0 8 3 3 #"ast"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 8 #"        "
0 0 16 3 1 #"("
0 0 9 3 5 #"cases"
0 0 2 3 1 #" "
0 0 8 3 3 #"exp"
0 0 2 3 1 #" "
0 0 8 3 3 #"ast"
0 0 2 29 1 #"\n"
0 0 2 3 10 #"          "
0 0 16 3 1 #"("
0 0 8 3 7 #"lit-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"num"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 8 3 3 #"num"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 10 #"          "
0 0 16 3 1 #"("
0 0 8 3 7 #"var-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"sym"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 8 3 3 #"sym"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 10 #"          "
0 0 16 3 1 #"("
0 0 8 3 8 #"true-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"true"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 14 3 2 #"#t"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 10 #"          "
0 0 16 3 1 #"("
0 0 8 3 9 #"false-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 5 #"false"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 14 3 2 #"#f"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 10 #"          "
0 0 16 3 1 #"("
0 0 8 3 7 #"sub-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"se"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 19 #"                   "
0 0 16 3 1 #"("
0 0 9 3 5 #"cases"
0 0 2 3 1 #" "
0 0 8 3 6 #"subexp"
0 0 2 3 1 #" "
0 0 8 3 2 #"se"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 6 #"if-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"test-exp"
0 0 2 3 1 #" "
0 0 8 3 8 #"true-exp"
0 0 2 3 1 #" "
0 0 8 3 9 #"false-exp"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 1 #" "
0 0 11 3 62
#";                            (if (eqv? (evaluate test-exp) #t)"
0 0 2 29 1 #"\n"
0 0 2 3 29 #"                             "
0 0 16 3 1 #"("
0 0 8 3 2 #"if"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 8 #"test-exp"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 33 #"                                 "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 8 #"true-exp"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 9 #"false-exp"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 8 #"cond-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"s1"
0 0 2 3 1 #" "
0 0 8 3 2 #"s2"
0 0 2 3 1 #" "
0 0 8 3 2 #"s3"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 2 #"s2"
0 0 16 3 2 #"))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 10 #"lambda-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"ids"
0 0 2 3 1 #" "
0 0 8 3 4 #"body"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 2 29 1 #"\n"
0 0 2 3 33 #"                                 "
0 0 16 3 1 #"("
0 0 9 3 5 #"begin"
0 0 2 29 1 #"\n"
0 0 2 3 35 #"                                   "
0 0 16 3 1 #"("
0 0 8 3 7 #"display"
0 0 2 3 1 #" "
0 0 13 3 45 #"\"Note: evaluate is unable to bind variables.\""
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 35 #"                                   "
0 0 16 3 1 #"("
0 0 8 3 7 #"newline"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 35 #"                                   "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"body"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 8 #"add-prim"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #"+"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 13 #"subtract-prim"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #"-"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 9 #"mult-prim"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #"*"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 8 #"div-prim"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #"/"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 8 #"mod-prim"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 6 #"modulo"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 7 #"and-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"and"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 6 #"or-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"or"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 7 #"xor-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"and"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"not"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 3 #"and"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 2 #"or"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 4 #"))))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 9 #"equal-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"eqv?"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 11 #"greater-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #">"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 10 #"lesser-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 4 #"exp1"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 1 #"<"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp1"
0 0 16 3 1 #")"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 8 3 4 #"exp2"
0 0 16 3 3 #")))"
0 0 2 29 1 #"\n"
0 0 2 3 21 #"                     "
0 0 16 3 1 #"("
0 0 8 3 7 #"app-exp"
0 0 2 3 1 #" "
0 0 16 3 1 #"("
0 0 8 3 5 #"rator"
0 0 2 3 1 #" "
0 0 8 3 5 #"rands"
0 0 16 3 1 #")"
0 0 2 29 1 #"\n"
0 0 2 3 30 #"                              "
0 0 16 3 1 #"("
0 0 8 3 10 #"eopl:error"
0 0 2 3 1 #" "
0 0 14 3 1 #"'"
0 0 8 3 8 #"evaluate"
0 0 2 3 1 #" "
0 0 13 3 47 #"\"Unable to evaluate an application expression.\""
0 0 16 3 8 #"))))))))"
0 00000000000 0 0 18 29 1 #"\n"
0 0 18 29 1 #"\n"
0 0 11 3 21 #";(define unparse-prim"
0 0 18 29 1 #"\n"
0 0 11 3 14 #";  (lambda (x)"
0 0 18 29 1 #"\n"
0 0 11 3 21 #";    (cases prim-op x"
0 0 18 29 1 #"\n"
0 0 11 3 25 #";      (add-prim () 'add)"
0 0 18 29 1 #"\n"
0 0 11 3 30 #";      (subtract-prim () 'sub)"
0 0 18 29 1 #"\n"
0 0 11 3 26 #";      (mult-prim () 'mul)"
0 0 18 29 1 #"\n"
0 0 11 3 25 #";      (div-prim () 'div)"
0 0 18 29 1 #"\n"
0 0 11 3 19 #";      (mod-prim ()"
0 0 11 3 9 #" 'mod))))"
0 0 18 29 1 #"\n"
0 0 18 29 1 #"\n"
0 0 11 3 20 #";(define exp-explore"
0 0 18 29 1 #"\n"
0 0 11 3 14 #";  (lambda (e)"
0 0 18 29 1 #"\n"
0 0 11 3 17 #";    (cases exp e"
0 0 18 29 1 #"\n"
0 0 11 3 30 #";      (lit-exp (datum) datum)"
0 0 18 29 1 #"\n"
0 0 11 3 24 #";      (var-exp (id) id)"
0 0 18 29 1 #"\n"
0 0 11 3 29 #";      (sub-exp (sub) sub))))"
0 0 4 29 1 #"\n"
0 0 4 29 1 #"\n"
0 0 13 29 1 #"\n"
0 00000000000
>>>>>>> .r8
=======
(define scanner-spec-hw6
  '((white-sp
     (whitespace) skip)
    (comment
     ("%" (arbno (not #\newline))) skip)
    (identifier
     (letter (arbno (or letter digit "?"))) symbol)
    (number
     (digit (arbno digit)) number)
    (true
     ("#t") symbol)
    (false
     ("#f") symbol)))

(define grammar-spec-hw6
  '((exp (number) lit-exp)
    (exp (identifier) var-exp)
    (exp ("(" subexp ")") sub-exp)
    (subexp ("lambda" "(" (arbno identifier) ")" exp) lambda-exp)
    (subexp ("if" boolexp exp exp) if-exp)
    (subexp ("cond" "(" (arbno boolexp exp ")" "(") "else" exp ")") cond-exp)
    (subexp ("add" exp exp) add-prim)
    (subexp ("sub" exp exp) subtract-prim)
    (subexp ("mul" exp exp) mult-prim)
    (subexp ("div" exp exp) div-prim)
    (subexp ("mod" exp exp) mod-prim)
    (subexp (exp (arbno exp)) app-exp)
    (boolexp (true) true-exp)
    (boolexp (false) false-exp)
    (boolexp ("(" boolsubexp ")") bool-sub-exp)
    (boolsubexp ("and" boolexp boolexp) and-exp)
    (boolsubexp ("or" boolexp boolexp) or-exp)
    (boolsubexp ("xor" boolexp boolexp) xor-exp)
    (boolsubexp ("equal" exp exp) equal-exp)
    (boolsubexp ("greater" exp exp) greater-exp)
    (boolsubexp ("lesser" exp exp) lesser-exp)
    ))

(define scan&parse
  (sllgen:make-string-parser scanner-spec-hw6 grammar-spec-hw6))
(sllgen:make-define-datatypes scanner-spec-hw6 grammar-spec-hw6)

(define unparse
  (lambda (x)
    (cond
      ((exp? x)
       (cases exp x
         (lit-exp (num) num)
         (var-exp (id) id)
         (sub-exp (se) (unparse se))))
      ((subexp? x)
       (cases subexp x
         (lambda-exp (ids body)
                     (list 'lambda ids (unparse body)))
         (if-exp (test-exp true-exp false-exp)
                 (list 'if (list (unparse test-exp)) (unparse true-exp) (unparse false-exp)))
         ;COND DOESN'T WORK
         (cond-exp (s1 s2 s3) (list (unparse s2) (unparse s3)))
         (add-prim (exp1 exp2) (list 'add (unparse exp1) (unparse exp2)))
         (subtract-prim (exp1 exp2) (list 'sub (unparse exp1) (unparse exp2)))
         (mult-prim (exp1 exp2) (list 'mul (unparse exp1) (unparse exp2)))
         (div-prim (exp1 exp2) (list 'div (unparse exp1) (unparse exp2)))
         (mod-prim (exp1 exp2) (list 'mod (unparse exp1) (unparse exp2)))
         (app-exp (rator rands)
                  (cons (unparse rator) (map unparse rands)))))
      ((boolexp? x)
       (cases boolexp x
         (true-exp (true) #t)
         (false-exp (false) #f)
         (bool-sub-exp (exp) (unparse exp))))
      ((boolsubexp? x)
       (cases boolsubexp x
         (and-exp (exp1 exp2) (list 'and (unparse exp1) (unparse exp2)))
         (or-exp (exp1 exp2) (list 'or (unparse exp1) (unparse exp2)))
         (xor-exp (exp1 exp2) (list 'xor (unparse exp1) (unparse exp2)))
         (equal-exp (exp1 exp2) (list 'equal (unparse exp1) (unparse exp2)))
         (greater-exp (exp1 exp2) (list 'greater (unparse exp1) (unparse exp2)))
         (lesser-exp (exp1 exp2) (list 'lesser (unparse exp1) (unparse exp2)))))
      (else 'whoops!))))

(define evaluate
  (lambda (ast)
    (cond
      ((null? ast) (eopl:error 'evaluate "No nulls please!"))
      ((exp? ast)
       (cases exp ast
         (lit-exp (num) num)
         (var-exp (id) id)
         (sub-exp (exp) (evaluate exp))))
      ((subexp? ast)
       (cases subexp ast
         (if-exp (test-exp true-exp false-exp)
                 (if (evaluate test-exp)
                     (evaluate true-exp) (evaluate false-exp)))
         ;COND DOESN'T WORK
         (cond-exp (s1 s2 s3) (evaluate s2))
         (lambda-exp (ids body) 
                     (begin
                       (display "Note: evaluate is unable to bind variables.")
                       (newline)
                       (evaluate body)))
         (add-prim (exp1 exp2) (+ (evaluate exp1) (evaluate exp2)))
         (subtract-prim (exp1 exp2) (- (evaluate exp1) (evaluate exp2)))
         (mult-prim (exp1 exp2) (* (evaluate exp1) (evaluate exp2)))
         (div-prim (exp1 exp2) (/ (evaluate exp1) (evaluate exp2)))
         (mod-prim (exp1 exp2) (modulo (evaluate exp1) (evaluate exp2)))
         (app-exp (rator rands)
                  (eopl:error 'evaluate "Unable to evaluate an application expression."))))
      ((boolexp? ast)
       (cases boolexp ast
         (true-exp (true) #t)
         (false-exp (false) #f)
         (bool-sub-exp (exp) (evaluate exp))))
      ((boolsubexp? ast)
       (cases boolsubexp ast
         (and-exp (exp1 exp2) (and (evaluate exp1) (evaluate exp2)))
         (or-exp (exp1 exp2) (or (evaluate exp1) (evaluate exp2)))
         (xor-exp (exp1 exp2) (and (not (and (evaluate exp1) (evaluate exp2))) (or (evaluate exp1) (evaluate exp2))))
         (equal-exp (exp1 exp2) (eqv? (evaluate exp1) (evaluate exp2)))
         (greater-exp (exp1 exp2) (> (evaluate exp1) (evaluate exp2)))
         (lesser-exp (exp1 exp2) (< (evaluate exp1) (evaluate exp2)))))
      (else 'errorinevaluate))))


(define test-list
  '("5" "a" "(if #t correct x)" "(if (lesser 4 5) correct x)"))

(define test
  (lambda ()
    (map (lambda (x) (evaluate (scan&parse x))) test-list)))>>>>>>> .r9
